import java.util.Arrays;

class Solution {
    public int findSubstringInWraproundString(String s) {
        // 创建dp表、初始化、填表、返回值
        char[] ss = s.toCharArray();
        int n = ss.length;

        int[] dp = new int[n];

        Arrays.fill(dp, 1);

        for (int i = 1; i < n; i++) {
            if (ss[i-1] + 1 == ss[i] || (ss[i-1] == 'z' && ss[i] == 'a')) {
                dp[i] += dp[i-1]; // 原始值为1，不能 = ，只能 +=
            }
        }

        // 去重：将相同字符结尾的取最大值
        int[] hash = new int[26];
        for (int i = 0; i < n; i++) {
            hash[ss[i]-'a'] = Math.max(dp[i], hash[ss[i]-'a']);
        }

        // 遍历去重后的数组求出最终结果
        int ret = 0;
        for (int i = 0; i < 26; i++) {
            ret += hash[i];
        }
        return ret;
    }
}